package com.yungu.swift.lbs.trace.baidu.track;

import com.yungu.swift.lbs.trace.baidu.model.BaseRequest;

/**
 * @description 查询轨迹里程请求类
 * @date 2017/12/2 10:22
 * @version 1.0
 */
public class GetDistanceRequest extends BaseRequest {

    /**
     * entity唯一标识，对应参数entity_name
     */
    private String entityName;
    /**
     * 开始时间	UNIX 时间戳，对应参数start_time
     */
    private long startTime;
    /**
     * 对应参数end_time
     * 结束时间不能大于当前时间，且起止时间区间不超过24小时。为提升响应速度，同时避免轨迹点过多造成请求超时（3s）失败，建议缩短每次请求的时间区间，将一天轨迹拆分成多段进行拼接
     */
    private long endTime;
    /**
     * 对应参数is_processed
     * 默认值：0
     * 取值规则：
     * 0：关闭轨迹纠偏，返回原始轨迹
     * 1：打开轨迹纠偏，返回纠偏后轨迹。
     */
    private String isProcessed;
    /**
     * 对应参数process_option
     * 默认值为：
     * need_denoise=1,need_mapmatch=0,radius_threshold=0,
     * transport_mode=driving
     * 取值规则为：
     * 1.去噪，示例：
     * need_denoise =0：不去噪
     * need_denoise =1：去噪
     * 2.绑路，示例：
     * need_mapmatch=0：不绑路
     * need_mapmatch=1：绑路
     * 3. 定位精度过滤，用于过滤掉定位精度较差的轨迹点，示例：
     * radius_threshold=0：不过滤
     * radius_threshold=100：过滤掉定位精度 Radius 大于100的点
     * 说明：当取值=0时，则不过滤；当取值大于0的整数时，则过滤掉radius大于设定值的轨迹点。例如：若只需保留 GPS 定位点，则建议设为：20；若需保留 GPS 和 Wi-Fi 定位点，去除基站定位点，则建议设为：100
     * 4.交通方式，鹰眼将根据不同交通工具选择不同的纠偏策略，目前支持驾车、骑行和步行，示例：
     * transport_mode=driving
     * transport_mode=riding
     * transport_mode=walking
     */
    private String processOption;

    /**
     * 对应参数supplement_mode
     * 默认值：no_supplement，不补充
     * 在里程计算时，两个轨迹点定位时间间隔5分钟以上，被认为是中断。中断轨迹提供以下5种里程补偿方式。
     * no_supplement：不补充，中断两点间距离不记入里程。
     * straight：使用直线距离补充
     * driving：使用最短驾车路线距离补充
     * riding：使用最短骑行路线距离补充
     * walking：使用最短步行路线距离补充
     */
    private String supplementMode;

    public String getEntityName() {
        return entityName;
    }

    public void setEntityName(String entityName) {
        this.entityName = entityName;
    }

    public long getStartTime() {
        return startTime;
    }

    public void setStartTime(long startTime) {
        this.startTime = startTime;
    }

    public long getEndTime() {
        return endTime;
    }

    public void setEndTime(long endTime) {
        this.endTime = endTime;
    }

    public String getIsProcessed() {
        return isProcessed;
    }

    public void setIsProcessed(String isProcessed) {
        this.isProcessed = isProcessed;
    }

    public String getProcessOption() {
        return processOption;
    }

    public void setProcessOption(String processOption) {
        this.processOption = processOption;
    }

    public String getSupplementMode() {
        return supplementMode;
    }

    public void setSupplementMode(String supplementMode) {
        this.supplementMode = supplementMode;
    }

    public GetDistanceRequest(long requestID, String ak, long serviceId, String entityName, long startTime, long endTime, String isProcessed, String processOption, String supplementMode) {
        super(requestID, ak, serviceId);
        this.entityName = entityName;
        this.startTime = startTime;
        this.endTime = endTime;
        this.isProcessed = isProcessed;
        this.processOption = processOption;
        this.supplementMode = supplementMode;
    }

    @Override
    public String toString() {
        return "GetDistanceRequest{" +
                "entityName='" + entityName + '\'' +
                ", startTime=" + startTime +
                ", endTime=" + endTime +
                ", isProcessed='" + isProcessed + '\'' +
                ", processOption='" + processOption + '\'' +
                ", supplementMode='" + supplementMode + '\'' +
                '}';
    }
}
